
"""
这道题可以使用二分查找来解决。因为 “能凑出的套牌数量” 具有单调性，
即如果能凑出x套牌，那么一定能凑出小于x的套牌数量；如果不能凑出
x套牌，那么一定不能凑出大于x的套牌数量。
"""

# 判断当前是否能凑出 x 套牌
def chck(x):
    # 需要 手写的牌
    need=0
    for i in range(n):
        cnt=0
        # a中当前的值 小于 能凑出的牌数
        if a[i]<x:
            # 还需要手写 多少张牌
            cnt=x-a[i]
        # 当前需要手写的数量 大于 当前最多能手写的
        if cnt > b[i]:
            # 说明 x 大了
            return False
        need+=cnt
    # 当前x 需要手写的牌  小于等于 总共需要手写的牌
    # 真 ==》满足条件，可以再尝试 x 更大的
    return need<=m

n,m=map(int,input().split())
a=list(map(int,input().split()))
b=list(map(int,input().split()))

# 确定 二分的 左 右 边界 ( 开区间 )
# 根据题意 最少， 最多 能凑出多少套牌 就是二分区间
left,right=-1,max(a)+m+1

while left+1<right:
    mid=(left+right)//2
    if chck(mid):
        # x 小了
        left=mid
    else:
        # x大了
        right=mid

# 最多能凑出多少套，从 满足条件中选择最大的 left的 左边 都是满足条件的情况 left为最大值
print(left)
